home *** CD-ROM | disk | FTP | other *** search
- XALTHELP/SCRDUMP, GEMDUMP Sourcen
-
- V1.0, 20.4.1994
- V1.1, 21.8.1995
-
- geschrieben von Th. Morus Walter
- (c) 1994/5 by Never Ready Software, Morus Walter
-
- Th. Morus Walter
- Frankenstraße 214
- 97078 Würzburg
- FEDERAL REPUBLIC of germany
- Tel. 0931/287055
-
- ------
-
- Die Sourcen zu XALTHELP/SCRDUMP und GEMDUMP dürfen unter den folgenden
- Bedingungen weitergegeben, verändert und/oder ganz oder teilweise für
- eigene Programme verwendet werden:
-
- 1. Weitergabe ist nur vollständig und mit dieser Datei erlaubt
- 2. Veränderte Versionen von XALTHELP/SCRDUMP bzw. GEMDUMP dürfen nur
- weitergegeben werden, wenn hinreichend deutlich gemacht wird, daß
- die Programme verändert wurden.
- Änderung des Namens, Hinweise in der Dokumentation, im Programm...
- Es muß in geeigneter Weise auf die ursprüngliche Urheberschaft der
- Programme hingewiesen werden.
- ist in geeigneter Weise zu
- Einer Veröffentlichung geänderter Versionen ist die Kontaktaufnahme
- mit mir - um die Änderung allgemein zu Übernehmen - vorzuziehen.
- Adresse siehe LIESMICH.TXT zum Programm
- 3. die Übernahme von Programmteilen in eigene Programme ist erlaubt.
- Dabei muß in geeigneter Weise auf die Verwendung meiner Routinen
- und deren Urheber verwiesen werden.
- 4. die obigen Festlegungen sind nicht wörtlich sondern ihrem Sinne
- entsprechend (was natürlich letztenende umfassender ist) zu
- befolgen
- (kurz: geht anständig mit meinen Quellen um)
-
- ACHTUNG!
- Der Autor übernimmt keinerlei Haftung für irgendwelche Schäden.
- Eventuelle Fehler sind das Risiko derer, die die Sourcen verwenden.
-
- -----
-
- XALTHELP/SCRDUMP und GEMDUMP wurde mit PureC 1.0 und PASM V'was weiß ich'
- entwickelt.
- Für die Verwendung anderer Compiler sind möglicherweise Anpassungen nötig.
- Man beachte insbesondere die Parameterübergabe in Registern von PureC.
-
- Die Quellen enthalten echte Tabulatoren. Die Tabulatorweite mit der ich
- arbeite ist 4.
-
- Die Quellen sind dokumentiert - allerdings nur knapp.
-
- Wer gar nichts versteht, lasse besser die Finger davon.
- Wer etwas nicht versteht,
- denke darüber nach.
- Wer etwas nicht versteht, darüber nachgedacht hat
- und es immer noch nicht versteht
- probiere es aus.
- Wer etwas nicht versteht, darüber nachgedacht hat, es ausprobiert hat
- und es immer noch nicht versteht
- wende sich gegebenenfalls an mich.
-
- -----
-
- Die Sourcen für XALTHELP/SCRDUMP und GEMDUMP sind (teilweise) gemeinsam.
- Unterschieden wird dann via bedingter Compilierung, für GEMDUMP muß
- in den Compileroptionen die Variable 'GEMDUMP' definiert werden.
-
- Folgende Sourcen existieren:
- GEMDUMP.S fehlt, kann aber aus PC_START.S erzeugt werden; s.u.
- (nur für GEMDUMP)
- SDUMP.C Code für den Hauptdialog, Verwaltung des Acc's
- (GEMDUMP/SCRDUMP)
- SCRDUMP.C eigentliche Speicherroutine
- für eigene Programme dürfte vor allem die
- Routine 'do_store_img' interessant sein,
- die eine durch eine MFDB beschriebene Bitmap
- in eine .IMG Datei schreibt.
- (GEMDUMP/XALTHELP)
- START.S Startupcode und Assemblerroutinen (nur XALTHELP)
-
- Die Datei GEM.H im Ordner 'include' wird via >include "GEM.H"< eingelesen,
- also bei den System-Include-Dateien gesucht; die Datei enthält allgemeine
- Makros zum Umgang mit AES-objects.
-
- Im Ordner 'rsc' finden sich die Resource-Files, von denen aber nur der
- Source-Output im Programm Verwendung findet.
- --------------------------------------------------------------------------------
- --
- -- wir basteln uns eine Source-Datei
- --
- --------------------------------------------------------------------------------
- Aus urheberrechtlichen Gründen fehlt die Datei 'GD_START.S', da es sich
- hierbei im Wesentlichen um die PC_START.S-Datei handelt und ich keine
- Lust auf Urheberrechts-Streitigkeiten mit Borland/ASH habe.
- Um aus der PC_START.S Datei eine GD_START.S zu machen gehe man wie folgt
- vor:
- - kopiere PC_START.S nach GD_START.S
- - füge bei den 'Export references' (ca. Zeile 11) ein:
- XDEF ev_time,inst
- XDEF do_init_vbl,do_exit_vbl,althelp,ah_time
- - nach
- 'Start:
- BRA.B Start0'
- (ca. Zeile 141) füge man ein:
- ev_time: DC.W 100
- DC.L 'TMMW'
- inst: DC.B "C:\TEMP\SCRDUMP\SCR",0," " ; 40 Byte!!!!
- DC.B 1
- DC.B 1
- even
-
- - ans Ende der Datei füge man (vor .END) ein
- ;-------------------------------
- even
-
- ;
- ; vbl eintragen (wird im supervisor-modus aufgerufen)
- ;
- do_init_vbl:MOVE.W $454,D0
- LSL.W #2,D0
- MOVE.L $456,A0
- MOVEQ #4,D1 ; ersten eintrag auslassen
- sloop: TST.L 0(A0,D1)
- BEQ.B found_
- ADDQ.W #4,D1
- CMP.W D0,D1 ; genial ist die schleife aber nicht!!!
- BNE.B sloop ; warum nicht d0 runterzählen, A0 um 4 erhöhen?
-
- CLR.L D0 ; war wohl nichts
- RTS ; ganzer vbl belegt, da kann man nichts machen
-
- found_: LEA vbl,A1
- MOVE.L A1,0(A0,D1)
-
- ; kb_shift-adresse ermitteln
-
- MOVE.L $4F2,A0 ; sysbase
- CLR.L kbshift
- CMP.W #$0104,2(A0) ; versionsnummer
- BLT no_kbshift
- MOVE.L 36(A0),kbshift ; kbshift-adresse merken (TOS1.4 required!!)
-
- no_kbshift: MOVEQ #1,D0 ; war erfolgreich
- RTS
- ;
- ; vbl-routine löschen
- ;
- do_exit_vbl:MOVE.W $454,D0
- LSL.W #2,D0
- MOVE.L $456,A0
- MOVE.W #4,D1
- LEA vbl,A1
- sloop1: CMPA.L 0(A0,D1),A1
- BEQ.S found1
- ADDQ.W #4,D1
- CMP.W D0,D1
- BNE.S sloop1
- CLR.L D0
- RTS
- found1: CLR.L 0(A0,D1)
- MOVEQ #1,D0
- RTS
-
- ;
- ; vbl-routine
- ; ALT HELP -> setze althelp flag, ah_time
- ; CTRL ALT HELP -> mache nichts (-> tos-hcopy) (ab tos1.4)
- ;
- vbl: TST.W $4EE ; dumpflag ?
- BNE end_vbl
-
- movea.l kbshift,a0
- tst.l a0
- BEQ notest
- btst #2,(a0) ; ctrl ??
- bne end_vbl ; dann nichts tun
-
- notest: move.w #-1,$4EE ; habs gelesen
- move.w #1,althelp
- move.l $4ba,ah_time
- end_vbl: rts
-
- kbshift: DC.L 0
-
- DATA
-
- althelp: DC.W 0
- ah_time: DC.L 0
- ;-------------------------------
-
-